package com.sh.二叉树;

/**
 * @Auther: sh
 * @Version 1.0
 * @Description:
 */
public class 二叉树的直径 {
    int ans = 1;

    public int diameterOfBinaryTree(TreeNode root) {
        depthDiameterOfBinaryTree(root);
        return ans - 1;
    }

    private int depthDiameterOfBinaryTree(TreeNode root) {
        if (root == null) {
            return 0;
        }

        int left = depthDiameterOfBinaryTree(root.left);
        int right = depthDiameterOfBinaryTree(root.right);
        int depth = Math.max(left, right) + 1;   // 返回这个节点的最大深度
        ans = Math.max(left+right+1, ans);
        return depth;
    }
}

